import axios from "axios";
// 引入 router 实例
import router from ".././router";

// const instance = axios.create({
//   baseURL: '/api'
// })

export const jsonRequest = (url, method, data, responseType = "json") => {
	// 如果是 GET 请求，将参数附加到 URL 上
	if ((method === "get" || method === "delete") && data) {
		url += data; // 将查询字符串附加到 URL
	}
	return axios({
		method: method,
		url: url, // 修改这里以使用代理
		data: data,
		responseType: responseType, // 设置响应类型为 blob 用于文件流
	})
		.then((response) => {
			// 处理成功的响应数据
			return response.data;
		})
		.catch((error) => {
			// 处理错误
			console.error("请求出错:", error);
			throw error;
		});
};

// 添加请求拦截器
axios.interceptors.request.use(
	function (config) {
		// 在发送请求之前做些什么
		const token = localStorage.getItem("token");
		//添加token到请求头
		if (token) {
			config.headers.Authorization = `${token}`;
		}

		return config;
	},
	function (error) {
		// 对请求错误做些什么
		return Promise.reject(error);
	},
);

// 添加响应拦截器
axios.interceptors.response.use(
	function (response) {
		// console.log(response);
		const { code, data, message } = response.data;

		return response;
	},
	function (error) {
		// 超出 2xx 范围的状态码都会触发该函数。
		// 对响应错误做点什么
		if (error.response && error.response.status === 401) {
			//删除内存中的token
			localStorage.removeItem("token");
			console.log("路由", router);
			router.push("/");
		}
		return Promise.reject(error);
	},
);
